selenium技巧- handle切換

標籤頁切換

  • 在selenium中每個標籤頁都有一個handle,若不切換handle,定位到的元素只會找到當前頁面。

這邊,以中國銀行點擊功能為例,會自動開啟新分頁。

創建selenium對象

1
2
from selenium import webdriver
browser = webdriver.Chrome()

訪問中國銀行,開啟功能分頁

1
2
3
4
5
6
7
8
browser.get("http://www.boc.cn/")

links = browser.find_elements_by_xpath(".//*[@class='index_lg']//a")

for i in links:
i.click()

print(browser.title)

查看目前所有分頁的handle,而handle每次生成都會是不一樣的。

1
2
3
4
5
6
7
8
handles = browser.window_handles

輸出:
['CDwindow-e10a2580-b8af-471c-a645-9265207ff5e6',
'CDwindow-21cd97f5-9e7f-436e-9de1-dfdb4bd38a14',
'CDwindow-95f59ba3-cbff-424f-a739-9fd170b936ae',
'CDwindow-fee5a3db-f3b2-4606-aefa-cbd42ebf3b30',
'CDwindow-c2977923-b62a-4fbf-a4d3-51ec90f3cdd8']

遍歷所有handle

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
for h in handles:
browser.switch_to_window(h) # 切換handle
print("當前 handle: ", browser.current_window_handle)
print("當前 title: ", browser.title)

輸出:
handle: CDwindow-e10a2580-b8af-471c-a645-9265207ff5e6
title: 中国银行全球门户网站
handle: CDwindow-21cd97f5-9e7f-436e-9de1-dfdb4bd38a14
title: 海外及港澳台地区客户网银登录
handle: CDwindow-95f59ba3-cbff-424f-a739-9fd170b936ae
title: 登录
handle: CDwindow-fee5a3db-f3b2-4606-aefa-cbd42ebf3b30
title: 中国银行
handle: CDwindow-c2977923-b62a-4fbf-a4d3-51ec90f3cdd8
title: 中国银行